package com.foreknow.demo5;

public class Master {
    /**
     * 实现带不同的宠物去医院
     * @param pet
     */
    public void cure(Pet pet) {
        if(pet.getHealth() < 50) {
            pet.toHospital();
        }
    }

    /**
     * 实现带不同的动物玩游戏
     * @param pet
     */
    public void play(Pet pet){
        //注意：子类中新扩充的方法对于父类是不可兼得，所以一定要将父类型强制转换为子类型
        //      double d = 3.14;
        //      int a = (int) d;    基本数据类型中的强制类型转换
        if(pet instanceof Dog){     //如果pet 与 Dog 有继承关系就返回true，否则返回false
            Dog dog = (Dog) pet;
//            引用类型中的强制类型转换，注意：要有继承关系才能转换
//            Dog dog = new Dog();
            dog.catchFly();
        }else if(pet instanceof Penguin){
            Penguin penguin = (Penguin) pet;
            penguin.sWimming();
        }
    }

    public static void main(String[] args) {
        Master master = new Master();
//        Dog dog = new Dog();
//        dog.setName("大黄");
//        dog.setHealth(30);
//        dog.setLove(100);
//
//        master.cure(dog);
//
//        Penguin penguin = new Penguin();
//        penguin.setName("QQ");
//        penguin.setHealth(40);
//        penguin.setLove(100);
//
//        master.cure(penguin);
//
        Dog dog = new Dog();
        master.play(dog);
        Penguin penguin = new Penguin();
        master.play(penguin);
    }
}
